package cn.tedu.util;

import java.util.*;

//测试  Collection接口
public class Test2 {
    public static void main(String[] args) {

        //1.创建对象
        Collection<Integer> c=new ArrayList<>();//1.创建对象
        //2.调用方法
        // boolean add(E e)
        c.add(100);//向集合中添加元素,要符合泛型类型的检查
        c.add(200);//自动装箱
        c.add(300);
        System.out.println(c);
        // void clear()
//        c.clear();//清空集合
        // boolean contains(Object o)
        System.out.println(c.contains(200));//判断c里是否包含200
        // boolean equals(Object o)
        System.out.println(c.equals("jack"));//判断是否和Jack相等

        //int hashCode()
        System.out.println( c.hashCode());//获取哈希码值
        // boolean isEmpty()
        System.out.println(c.isEmpty());//判断c是否为空
        // boolean remove(Object o)
        System.out.println(c.remove(100));//移除100元素
        //int size()
        System.out.println(c.size());//获取集合里的元素的个数
        // Object[] toArray()   Object[]--可以存入的数据类型丰富，很通用
        Object[] o=c.toArray();//把c里的数据存入Object数组
        System.out.println(Arrays.toString(o));

        //迭带集合中的元素
        // 方式一：Iterator<E> iterator()
        Iterator<Integer> it=c.iterator();
    //        Iterator it=c.iterator();//没有泛型的约束下面需要强转
            while(it.hasNext()){//hasNext（）判断有没有数据
            Integer date=it.next();//获取数据
    //            Integer date=(Integer)it.next();//获取数据 --数据需要进行强转
            System.out.println(date);
        }
        //方式二：foreach的使用场景：只有数组/Collection集合可以使用
        //语法：for(便利得到的数据的类型   变量名 ： 要便利的是啥){循环体}
        for (Integer z:c) {
            System.out.println(z);
        }
        //1.创建对象
        Collection<Integer> c2=new ArrayList<>();
        c.add(100);
        c.add(200);
        //2.调用方法
        System.out.println("********************************");
        //boolean addAll(Collection<? extends E> c)
        System.out.println(c.addAll(c2));//把c2加到c里
        System.out.println(c);
        // boolean containsAll(Collection<?> c)
        System.out.println(c.containsAll(c2));//判断c里包含c2吗
        System.out.println(c);
//        System.out.println(c.removeAll(c2));//移除c和c2的交集
        // boolean retainAll(Collection<?> c)
        System.out.println(c.retainAll(c2));//保留c和c2的交集
        System.out.println(c);

    }
}
